iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
AI & Data

AI語音模型訓練: machine learning 和 deep learning 的學習與應用系列 第 29

Day29 VITS語音模型訓練(中):專案程式碼理解

  • 分享至 

  • xImage
  •  

今天就接續明天繼續對專案內的程式碼、檔案進行理解
一樣先放上專案連結:https://github.com/Plachtaa/VITS-fast-fine-tuning
以及作者連結:https://github.com/Plachtaa


上一篇講完configs 今天從monotonic繼續講
因為東西比較多,所以程式碼就不截,只截資料夾

monotonic_align資料夾

monotonic_align/init.py
一個用 Cython 進行優化的函數,目的是算一個矩陣neg_cent中的最大路徑。這個矩陣的每一個元素都代表一條路徑的 "cost" 或者說 "negative cost"。函數會根據這些成本,計算出整體成本最小的路徑。
monotonic_align/core.pyx
一個用Cython編寫的函數,目的是算一個矩陣中每一行的最大路徑。這個函數似乎是用來優化一個動態規劃問題的求解,並計算每一行最佳路徑的起始點。
monotonic_align/setup.py
一個使Cython代碼編譯成Python C擴展模組的設置檔案,使用了Distutils和Cython。通過Cython編譯器將 "core.pyx" 檔案編譯成一個 C擴展模組,然後使用 Distutils 安裝這個模組。這樣可以提高性能,因為C擴展通常比純Python代碼運行得更快。
https://ithelp.ithome.com.tw/upload/images/20231014/20160630KK9P0GnYQy.png

scripts資料夾

scripts/denoise_audio.py
這段的主要目的是對原始目錄中的音頻文件(raw_audio_dir)進行去噪處理,然後將處理後的音頻文件保存到另一個目錄(denoise_audio_dir)中。
裡面會用到 "finetune_speaker.json" 的配置文件,這個文件包含了一些參數,例如目標的取樣率。
scripts/download_model.py
這段使用了 Google Colab 提供的files模組,該模組用於Colab中進行文件的上傳和下載。在這裡,files.download 函數用於下載指定路徑的文件。
scripts/download_video.py
這段是在 Google Colab 環境中執行,用於批量下載YouTube上的影片,影片的連結和檔名信息由用戶提供的.txt 文件中讀取。
scripts/long_audio_transcribe.py
這邊的主要是使用Whisper模型進行語音轉文本,然後根據轉文本結果分割原始音訊,最終保存分割後的音訊信息。這一段是針對長音訊(long audio)的。
scripts/rearrange_speaker.py
這裡是對模型的權重和配置進行修改,以符合新的需求或限制。其實就是在訓練模型的過程中需要調整參數等等的檔案。
scripts/resample.py
這段是確保 ./sampled_audio4ft 目錄下的所有WAV檔案(所有語音樣本)都符合指定的目標取樣率。
scripts/short_audio_transcribe.py
這段是在處理並轉錄一個目錄下的語音樣本,並生成相應的語音註釋文件。這一段是針對短音訊的,程式碼中的一些部分顯示了對於長度超過 20 秒的音頻就不會管他。
scripts/video2audio.py
video to audio這段主要是將視訊文件(.mp4 格式)轉換為音訊文件(.wav 格式)。透過 moviepy.editor 中的 AudioFileClip 類讀取視頻的音頻部分,然後將其寫入到新的音訊文件中。
scripts/voice_upload.py
這段是一個檔案上傳腳本,使用了Google Colab的files,讓你可以在Colab環境中上傳檔案。
https://ithelp.ithome.com.tw/upload/images/20231014/20160630iiQQHie8Xl.png

text資料夾

text/pycache/
這個資料夾裡的檔案都是 Python 的編譯過的字節碼(bytecode)檔案,字節碼檔案通常由 ython解釋器自動生成,並根據你的 Python 版本和模組的內容而異。
text/init.py
這段是 Tacotron 模型中用來處理文字的相關功能,包括文本轉換成數字序列、清理文本等。這邊有特別寫這段程式碼是from https://github.com/keithito/tacotron
text/cantonese.py
這段定義了一系列函數,主要用於將阿拉伯數字轉換為中文數字、將拉丁字母轉換為IPA音標(International Phonetic Alphabet,國際音標)、以及將粵語轉換為IPA音標。
text/cleaners.py
這一系列的函數似乎是用於清理和轉換文本,使其適應特定的語音處理或機器學習模型的需求。這些函數的目的是為了確保輸入文本符合特定語音處理模型的需求,並且以清晰的格式呈現。
text/english.py
text/japanese.py
text/korean.py
text/mandarin.py
text/ngu_dialect.py
text/sanskrit.py
text/shanghainese.py
text/symbols.py
text/thai.py

這邊就是各種語言Tacotron模型的文本清理部分,用於預處理輸入的文本數據。這些清理步驟的目的是將輸入文本轉換為更一致的格式,以確保模型在訓練和評估時能夠更好地處理文本數據。
https://ithelp.ithome.com.tw/upload/images/20231014/20160630Lasr7Gej64.png


專案大概理解到這邊,下一篇就會用colab開始實作了!


上一篇
Day28 VITS語音訓練(中)
下一篇
Day30 VITS語音模型訓練(完): 成功生成模型與完賽心得!
系列文
AI語音模型訓練: machine learning 和 deep learning 的學習與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言